██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
PowerShell
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwbqPowerShell, noto inizialmente come mwbgMicrosoft Shell, mwbwMSH o col nome in codice mwcaMonad e poi come mwcqWindows mwcgPowerShell, è una mwcwshell caratterizzata dall'mwdainterfaccia a riga di comando (CLI) e da un mwdqlinguaggio di scripting, sviluppata da mwdgMicrosoft, basato sulla mwdwprogrammazione a oggetti e sul mweamweqframework mwegMicrosoft .NET.
Microsoft intendeva in origine distribuire PowerShell insieme con mwfaWindows Vista, ma in seguito ha definito delle date di distribuzione diverse per PowerShell. Necessita della versione 2.0 del mwfq.NET Framework ed è supportato su mwfgWindows XP, mwfwWindows Server 2003, Windows Vista, mwgaWindows Server 2008, mwgqWindows 7, mwggWindows 8 e mwgwWindows 10 disponibile nelle edizioni mwhax86, mwhqx64 e mwhgItanium. Era presente in versione 2 su Windows 7 dal quale non è disinstallabile. L'installazione di Powershell su mwhwWindows 2000 è possibile (previa installazione del framework), ma il sistema che ne risulta è completamente non standard e non supportato.
Costituisce inoltre la base dell'interfaccia amministrativa per mwiqMicrosoft Exchange Server 2007 dove qualsiasi operazione è svolta tramite riga di comando e l'interfaccia mwigGUI è posizionata su uno strato superiore a detti comandi.
Inizialmente noto come Windows PowerShell è stato reso mwjamwjqopen source e multi piattaforma il 18 agosto 2016 con l'introduzione di PowerShell Core. Il primo è costruito su .NET Framework, il secondo su .NET Core.
Contents
• Storia
• Principi
• Note
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Storia
Ogni distribuzione di mwkqMS-DOS e mwkgMicrosoft Windows ha sempre incorporato un'Interfaccia a riga di comando: mwkwcommand.com nelle versioni basate su mwlaMS-DOS; mwlqcmd.exe in quelle basate su mwlgWindows NT: non erano, però, in grado di riprodurre, o di automatizzare tutte le funzioni amministrative disponibili tramite mwlwGUI, sebbene la situazione sia migliorata con mwmaWindows Server 2003. Ciò era dovuto ad una combinazione di limitazioni intrinseche agli strumenti equivalenti a riga di comando o al fatto che Microsoft non ha fornito, per lungo tempo, mwmqutility affidabili di questo tipo.cite-ref-1[1]
Inoltre, a differenza degli ambienti mwnwUnix, né command.com né cmd.exe rispettano lo standard mwoaPOSIX.2. Services for UNIX include una mwogpdksh che rispetta tale standard, ma sia questa che altre shell UNIX che sono disponibili non sono in grado di compiere molti compiti di routine, che restano legati all'interfaccia grafica di Windows. Sebbene la suite di servizi per UNIX fosse stata integrata in Windows Server 2003 R2 e poi inclusa anche in alcune edizioni di Windows Vista, in un tempo precedente essa era resa disponibile come componente aggiuntivo a pagamento (ad esempio il mwowresource kit di Windows 2000) impedendone di fatto l'adozione su larga scala.
Gli utenti erano scoraggiati dall'uso delle funzionalità a riga di comando a causa della mancanza di documentazione esaustiva. Per contro, anche molte applicazioni grafiche in Unix erano sostanzialmente dei mwpgmwpwwrapper per tool a riga di comando, comunque corredati di documentazione.
mwqqMicrosoft tentò quindi di porre rimedio ad alcune di tali limitazioni introducendo nel 1998 mwqgWindows Script Host, in concomitanza con la distribuzione di mwqwWindows 98. Si trattava di un nuovo livello interprete di istruzioni, che potevano essere espresse con un buon numero di mwralinguaggi di scripting, al fine di controllare le applicazioni. Tuttavia, lo mwrqScript Host aveva anche significative limitazioni: non era integrato con la shell, la sua documentazione non era molto accessibile, e fu presto considerato un pericolo per la sicurezza del sistema, dopo che diversi mwrgvirus misero in luce la debolezza sostanziale del suo modello di sicurezza.
Windows Server 2003 e alcune versioni di Windows XP includono un host per script a riga di comando denominato Cscript.exe (si tratta, essenzialmente, di una porzione autonoma del Windows Script Host di cui sopra), non integrato con la shell preesistente (cmd.exe). Questi mwsasistemi operativi forniscono anche altre righe di comando mwsqmwsgad hoc (per esempio netsh), anch'esse non del tutto integrate.
Una limitazione fondamentale all'automatizzazione dei task in Windows era il fatto che le sue interfacce di amministrazione native erano aperte ai tool grafici proprietari di Microsoft, e ad ogni interfaccia di script che Microsoft poteva scegliere di fornire. Poiché la GUI costituiva l'interfaccia primaria, risultava difficile fornire mwtqwrapper in grado di essere inseriti in script - una situazione che è esattamente agli antipodi di quella della maggior parte delle implementazioni di mwtgUNIX, in cui una riga di comando in grado di eseguire degli script forniva le funzionalità base.
Microsoft progettò PowerShell per rendere meno insormontabili questi problemi, e per rendere meno oneroso il processo di sviluppo di nuove applicazioni grafiche e a riga di comando integrando un linguaggio di scripting più sicuro in una nuova shell di comando estendibile, che fosse in grado di svolgere e automatizzare gli stessi compiti amministrativi fondamentali che vengono svolti tramite interfaccia grafica in Windows. L'interfaccia utente di gestione di mwuaExchange Server 2007, per esempio, si basa su PowerShell. Nella maggior parte dei compiti di tutti i giorni, PowerShell può sostituire cmd.exe e Windows Script Host (WSH). Tuttavia, per motivi di retrocompatibilità, sia cmd.exe che WSH continueranno a essere supportati da Windows. Microsoft si è impegnata a costruire i tool grafici del futuro sopra PowerShell, assicurandosi che le funzionalità amministrative di base continuino a essere utilizzabili tramite riga di comando, sulla falsariga di un sistema operativo Unix.
Microsoft ha pubblicato la seconda mwugbeta pubblica di Monad l'11 settembre 2005, mentre la terza è stata distribuita il 10 gennaio 2006.
Microsoft ha annunciato il 25 aprile 2006 che WSH avrebbe cambiato nome in Windows PowerShell, e sarebbe divenuta una parte significativa della sua offerta di strumenti di gestione del sistemacite-ref-powershell-2-0[2].
La prima release candidate di PowerShell è stata distribuita contestualmente all'annuncio. La seconda release candidate è stata distribuita il 26 settembre 2006. La versione 1.0 è stata distribuita il 14 novembre 2006. La versione 2.0 è presente di serie su mwwqWindows 7. La versione 3.0, disponibile per Windows 7 SP1 e Windows 2008 Server R2 SP1 è di serie su Windows 8 e Windows Server 2012, come parte del più ampio Windows Management Framework V3, di cui fa parte anche WinRM.
La versione 6 è stata pubblicata il 2 agosto 2016 e, rende il software mwwwopen source sotto mwxalicenza MITcite-ref-3[3] e lo rende disponibile anche per Linux e Mac OS. Il nome viene infatti cambiato eliminando Windows dal nome e lasciando solo PowerShell.
Descrizione
Principi
Il nome in codice di PowerShell, Monad, proviene dalla mwzamonadologia di mwzqGottfried Leibniz, una filosofia in cui l'universo è composto da elementi fondamentali, le mwzgmonadi, disposti in una "mwzwarmonia prestabilita". In maniera simile, PowerShell è la combinazione di compiti complessi e di una serie di componenti, i mwaacmdlet (mwaqcommand-let), che sono classi .NET progettate per sfruttare le caratteristiche dell'ambiente. La differenza fondamentale tra l'approccio Unix e quello di PowerShell risiede nel fatto che piuttosto che creare una mwagmwawpipeline basata su mwbainput e output testuali, PowerShell fa passare i dati da un mwbqcmdlet all'altra come mwbgoggetti (dati dotati di una struttura ben precisa).
L'output di un mwcacmdlet, se si tenta di accedervi tramite riga di comando, viene automaticamente convertito in testo; se, invece, si tenta di utilizzarlo in un altro mwcqcmdlet, esso verrà convertito nell'oggetto più appropriato per l'input di quell'altro mwcgcmdlet. In questo modo, varie utility comunemente utilizzate nelle pipelines Unix, quali mwcwgrep e mwdaawk, non sono più necessarie, e si permette una combinazione interattiva o in un ambiente di scripting dei singoli elementi, cosa che avrebbe, diversamente, richiesto un mwdqlinguaggio di programmazione più complesso. Per esempio, una lista dei processi in esecuzione non sarà costituita dal testo che li descrive, ma dagli oggetti che la compongono, sicché è possibile invocare metodi su questi oggetti senza far esplicito riferimento ad alcuna struttura o mwdglibreria.
Caratteristiche
• Linguaggio di scripting simile al mwegC#, con molte funzionalità dedicate agli utenti esperti, come il supporto diretto alle mwewmwfahash table, i costrutti mwfqmwfgswitch basati su mwfwespressioni regolari, la scomposizione degli mwgaarray, la possibilità di memorizzare come dati mwgqmetodi anonimi da eseguire in un secondo momento. Sono presenti, naturalmente, tutte le caratteristiche che ci si aspetta di trovare in un linguaggio di scripting, quali l'mwggiterazione (mwgwmwhafor / mwhqmwhgforeach / mwhwmwiawhile), i costrutti condizionali (mwiqmwigif / mwiwmwjaswitch), i campi di mwjqvisibilità delle variabili (mwjgglobal / mwjwscript / mwkalocal / mwkqprivate) e la possibilità di definire funzioni.
• Tutti i mwkwcmdlet ereditano alcune caratteristiche, cosa che permette all'utente di scegliere, ad esempio, il livello di interazione e la modalità di gestione degli errori; si consideri, come esempio, la "sospensione", che permette di entrare in una nuova shell di comando, indagare su un problema, e quindi continuare con il comando originale. Al programmatore viene fornito un semplice meccanismo integrato per definire le richieste da mostrare in situazioni del genere. i mwlacmdlet che restituiscono qualcosa all'esterno supportano le opzioni mwlq-WHATIF e mwlg-CONFIRM. mwlw-WHATIF simula l'esecuzione della procedura, comunicandone il possibile esito all'utente. mwma-CONFIRM informa l'utente su ciò che sta per accadere e gli permette di decidere cosa fare.
• Un modello mwmgprovider estendibile fornisce la possibilità di accedere e manipolare non solo il mwmwfile system, ma anche altre strutture dati gerarchiche. Ad esempio, PowerShell integra un provider per il mwnaRegistro di Windows che consente l'accesso agli alberi mwnqHKLM (mwngHKEY_LOCAL_MACHINE) e mwnwHKCU (mwoaHKEY_CURRENT_USER). In questo modo, il registro può essere visualizzato con comandi quali mwoqmwogdir HKLM:\SOFTWARE\Microsoft dal prompt della shell. PowerShell fornisce mwowprovider per la libreria di certificati di sicurezza, le mwpavariabili d'ambiente e di shell, le funzioni e gli alias; gli utenti possono creare loro propri provider e integrarli in PowerShell.
• Le opzioni della riga di comando sono, in genere, parole intere, ma è possibile farvi riferimento più velocemente, specificando solo il numero minimo di lettere necessario a distinguerle dalle altre (per esempio, l'opzione mwpg-mostra-informazioni-dettagliate può essere richiamata specificando solo mwpw-m se nessun'altra opzione comincia per mwqam).
• Possibilità di assegnare l'output di un comando ad una variabile, che diventa un oggetto o un array di oggetti visualizzabile in qualunque maniera si desideri.
Windows PowerShell ISE
Windows PowerShell ISE (Integrated Scripting Environment) è un’applicazione introdotta a partire da PowerShell 2.0cite-ref-4[4]. Con questa versione di PowerShell si possono eseguire comandi, provare e sottoporre a mwtadebug gli script in un’unica interfaccia utente multivista (e con grafica Windows). I riquadri sono specifici per i comandi, per gli script e per i risultati.
Note
cite-note-11. ↑ mwuwmwvamwvqIl DOS è ancora vivo, nascosto dentro Windows 10 - Wired, in mwvgWired, 17 gennaio 2017. mwvwURL consultato il 4 febbraio 2017.
cite-note-powershell-22. ↑ mwww(mwxamwxqEN) Jeffrey Snover, mwxgmwxwWindows PowerShell (Monad) Has Arrived, su mwyaWindows PowerShell team blog, MSDN, 25 aprile 2006. mwyqURL consultato il 26 aprile 2006.
cite-note-33. ↑ mwzq(mwzgmwzwEN) mw0amw0qLICENSE.txt (mw0gmw0wTXT), su mw1aPowershell, Github. mw1qURL consultato il 22 agosto 2020.
cite-note-44. ↑ mw2qStefano Serafino, mw2gmw2wWindows PowerShell: cos'è e a cosa serve (guida completa) |'L'|, su mw3aMemex Computer, 18 maggio 2017.
Bibliografia
• mw4aCobisi, Windows PowerShell 2.0 - Guida completa, ISBN 978-88-8233-893-0 (archiviato dall'url originale il 1º luglio 2010). «Community lead di powershell.it, la community italiana di Windows PowerShell»
• mw4gBruce Payette, Windows PowerShell in Action, ISBN 1-932394-90-7. «Membro fondatore del team di Windows PowerShell e uno degli sviluppatori chiave del linguaggio di scripting»
• mw5aAndy Oakley, Monad - Introducing the MSH Command Shell and Language (the Toad book, ISBN 0-596-10009-4.
• mw5gDon Jones, An Introduction to Microsoft PowerShell (archiviato dall'url originale il 27 ottobre 2006).
• mw6aDon Jones, Jeffery Hicks, Windows PowerShell: TFM, ISBN 0-9776597-1-2.
• mw6wLee Holmes, Windows PowerShell Quick Reference, ISBN 0-596-52813-2. «Sviluppatore del team di Windows PowerShell»
• mw7qJerry Lee Ford Jr, Microsoft Windows Powershell Programming for the Absolute Beginner, 2007, ISBN 1-59863-354-6.
• mw7wAndrew Watt, Professional Windows PowerShell, ISBN 0-471-94693-1. URL consultato il 21 novembre 2006 (archiviato dall'url originale il 9 novembre 2006). «Windows PowerShell MVP»
Altri progetti
Altri progetti
• Wikimedia Commons
• Wikimedia Commons contiene immagini o altri file su PowerShell
Collegamenti esterni
• (EN) Sito ufficiale, su microsoft.com.
• (EN) Blog ufficiale, su blogs.msdn.microsoft.com.
• citerefgithub(EN) PowerShell, su GitHub.
• Repository sorgenti di PowerShell, su github.com.
• Repository sorgenti di PowerShell, su github.com.
• Repository sorgenti di PowerShell, su github.com.
• Sito di segnalazione bug, su windowsserver.uservoice.com.